/*
* Copyright (C) 2010-2012 Magnus Skjegstad
* 
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
* 
* The latest version of this library can be downloaded from http://mist-pubsub.googlecode.com
* 
*/
package com.skjegstad.mist2.datatypes;

import java.nio.ByteBuffer;
import java.util.Collection;

/**
 *
 * @author Magnus Skjegstad
 */
public class ListAcknowledgement implements Acknowledgement {    
    private byte[] data;

    public ListAcknowledgement(byte[] data) {
        this.data = data;
    }
    
    public ListAcknowledgement(Collection<Long> hashes) {
        ByteBuffer myBuffer = ByteBuffer.allocate(hashes.size() * Long.SIZE/8);
        for (Long l : hashes)
            myBuffer.putLong(l);        
        this.data = myBuffer.array();
    }

    public byte[] getData() {
        return data;
    }

    public int getK() {
        return 1;
    }

    public int getLengthInBits() {
        return data.length * 8;
    }

    public boolean isAcked(long hash) {
        ByteBuffer myBuffer = ByteBuffer.wrap(data);
        while (myBuffer.hasRemaining())
            if (hash == myBuffer.getLong())
                return true;
        return false;
    }
    
}
